const express=require('express');
//引入连接池模块
const pool=require('../pool.js');
//创建路由器对象
const r=express.Router();
//第一个注册路由
//http://127.0.0.1:8080/v1/users
//添加路由,用户注册(post /register)
r.post('/register',(req,res,next)=>{
	//获取post请求的数据
	let obj = req.body;
	//console.log(obj);
//执行SQL命令
//因为query是异步,所有要把send放到函数里面,否则先执行异步后面的语句
	pool.query('select uname from cg_user where uname=?',[obj.uname],(err,result)=>{
			if(err) {
				//如果出现错误交给下一个中间件
				next(err);
				//不能往后执行
				return;
			}
			if(result.length===0){
				pool.query('insert into cg_user set ?',[obj],(err,result)=>{
					if(err){
						next(err);
						return;
					}
					res.send({code:200,msg:'注册成功'});
				});
			}else{
				res.send({code:201,msg:'用户名已被注册'});
			}
	});
});


//第二个登录路由

//url: http://127.0.0.1:8080/v1/users/login
//添加路由,用户登录(uname,upwd)
r.post('/login',(req,res,next)=>{
//2.1
  //获取数据
  let obj = req.body;
  //console.log(obj);
//2.3
  //查询数据,执行SQL命令
	 pool.query('select * from cg_user where uname=? and upwd=?',[obj.uname,obj.upwd],(err,result)=>{
	   if(err){
		   next(err);
			 return;
	 }
		//console.log(result);
		//结果是数组,如果数组长度为0说明登录失败,否则登录成功
		if(result.length===0){
		  res.send({code:201,msg:'登录失败'});
		}else{
      res.send({code:200,msg:'登录成功'});
		}
	});
});


//第三个路由,修改数据
//3.1添加路由(put )
r.put('/uploader',(req,res,next)=>{
  let obj=req.body;
	//console.log(obj);

//3.2验证各项数据不能为空
//循环验证
let i=400;
//k是obj的属性值
for(let k in obj){
	i++;
//console.log(k,obj[k]);
//如果属性值obj[k]为空,则提示k这项不能为空
  if(!obj[k]){
	  res.send({code:i,msg:k+'不能为空'});
		return;
	}
}
//3.3执行SQL命令,修改数据
	pool.query('update cg_user set ? where uid=?',[ obj,obj.uid ],(err,result)=>{
		if(err){
			next(err);
			return;
	  }
		console.log(result);
	  if(result.affectedRows===0){
		  res.send({code:201,msg:'修改失败'});
		}else{
		  res.send({code:200,msg:'修改成功'});
		}
	});
});


//第4个路由检测用户名是否可用
//添加路由(get /用户名),检测用户名是否可用,返回结果
r.get('/register:uname',(req,res,next)=>{
  let obj=req.params;
	//console.log(obj);
//执行SQL命令,查询数据
	pool.query('select uname from cg_user where uname=?',[obj.uname],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		//console.log(result);
		if(result.length===0){
		  res.send({code:201,msg:'用户名可用'});
		}else{
		  res.send({code:200,msg:'用户名不可用'});
		}
	});
});


//第5个路由
//传递 注册的手机号,检测号码是否可用使用
r.get('/register:phone',(req,res,next)=>{
  let obj=req.params;
	console.log(obj);

//判断手机号是否为空
  if(obj.phone===''){  
	  res.send({code:401,msg:'phone不能为空'});
		//跳出函数
		return;
	}
	if( !(/^1[3-9]\d{9}$/.test(obj.phone)) ){
		res.send({code:301,msg:'手机号码格式错误'});
		return;
	}
//执行SQL命令,查询数据
	pool.query('select*from cg_user where phone=?',[obj.phone],(err,result)=>{
		if(err){
			next(err);
			return;
		}
		console.log(result);
		if(result.length===0){
		  res.send({code:201,msg:'手机号码可用'});
		}else{
		  res.send({code:200,msg:'手机号码不可用'});
		}
	});
});

//导出路由器对象
module.exports = r;
